﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ServiceCore.Tool.TIM.im_open_login_svc
{
    #region 导入单个账号
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class account_import : base_post_model<account_import_post>
    {
        public override string servicename
        {
            get { return "im_open_login_svc"; }
        }
        public override string command
        {
            get { return "account_import"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class account_import_post
    {
        /// <summary>
        /// 用户名，长度不超过32字节
        /// </summary>
        public string Identifier { get; set; }
        /// <summary>
        /// 用户昵称
        /// </summary>
        public string Nick { get; set; }
        /// <summary>
        /// 用户头像
        /// </summary>
        public string FaceUrl { get; set; }
    }
    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class account_import_result : base_post_result
    {

    }
    #endregion 
    #region 导入多个账号
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class multiaccount_import : base_post_model<multiaccount_import_post>
    {
        public override string servicename
        {
            get { return "im_open_login_svc"; }
        }
        public override string command
        {
            get { return "multiaccount_import"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class multiaccount_import_post
    {
        /// <summary>
        /// 用户名，单个用户名长度不超过32字节，单次最多导入100个用户名
        /// </summary>
        public string[] Accounts { get; set; }

    }
    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class multiaccount_import_result : base_post_result
    {
        /// <summary>
        /// 导入失败的帐号列表
        /// </summary>
        public string[] FailAccounts { get; set; }
    }
    #endregion 
    #region 删除账号 
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class account_delete : base_post_model<account_delete_post>
    {
        public override string servicename
        {
            get { return "im_open_login_svc"; }
        }
        public override string command
        {
            get { return "account_delete"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class account_delete_post
    {
        public List<account_delete_Item> DeleteItem { get; set; }
    }
    /// <summary>
    /// 请求删除的帐号的 UserID
    /// </summary>
    public class account_delete_Item
    {
        public string UserID { get; set; }
    }
    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class account_delete_result : base_post_result
    {
        public List<account_delete_ResultItem> ResultItem { get; set; }
    }
    public class account_delete_ResultItem
    {
        /// <summary>
        /// 单个帐号的错误码，0表示成功，非0表示失败
        /// </summary>
        public int ResultCode { get; set; }
        /// <summary>
        /// 单个帐号删除失败时的错误描述信息
        /// </summary>
        public string ResultInfo { get; set; }
        /// <summary>
        /// 请求删除的帐号的 UserID
        /// </summary>
        public string UserID { get; set; }
    }
    #endregion
    #region 查询账号
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class account_check : base_post_model<account_check_post>
    {
        public override string servicename
        {
            get { return "im_open_login_svc"; }
        }
        public override string command
        {
            get { return "account_check"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class account_check_post
    {
        /// <summary>
        /// 请求检查的帐号对象数组，单次请求最多支持100个帐号
        /// </summary>
        public List<account_check_CheckItem> CheckItem { get; set; }
    }

    public class account_check_CheckItem
    {
        /// <summary>
        /// 请求检查的帐号的 UserID
        /// </summary>
        public string UserID { get; set; }
    }
    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class account_check_result : base_post_result
    {
        public List<account_check_ResultItem> ResultItem { get; set; }
    }

    public class account_check_ResultItem
    {
        /// <summary>
        /// 请求检查的帐号的 UserID
        /// </summary>
        public string UserID { get; set; }
        /// <summary>
        /// 单个帐号的检查结果：0表示成功，非0表示失败
        /// </summary>
        public int ResultCode { get; set; }
        /// <summary>
        /// 单个帐号检查失败时的错误描述信息
        /// </summary>
        public string ResultInfo { get; set; }
        /// <summary>
        /// 单个帐号的导入状态：Imported 表示已导入，NotImported 表示未导入
        /// </summary>
        public string AccountStatus { get; set; }
    }
    #endregion 
    #region 失效帐号登录态
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class kick : base_post_model<kick_post>
    {
        public override string servicename
        {
            get { return "im_open_login_svc"; }
        }
        public override string command
        {
            get { return "kick"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class kick_post
    {
        /// <summary>
        /// 用户名
        /// </summary>
        public string Identifier { get; set; }
    }
    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class kick_result : base_post_result
    {

    }
    #endregion 
    #region 失效帐号登录态
    /// <summary>
    /// 定义请求包
    /// </summary>
    public class querystate : base_post_model<querystate_post>
    {
        public override string servicename
        {
            get { return "im_open_login_svc"; }
        }
        public override string command
        {
            get { return "querystate"; }
        }
    }
    /// <summary>
    /// 定义post模型
    /// </summary>
    public class querystate_post
    {
        /// <summary>
        /// 是否需要返回详细的登录平台信息。0表示不需要，1表示需要
        /// </summary>
        public int? IsNeedDetail { get; set; }
        /// <summary>
        /// 需要查询这些 UserID 的登录状态，一次最多查询500个 UserID 的状态
        /// </summary>
        public string[] To_Account { get; set; }
    }
    /// <summary>
    /// 定义返回模型
    /// </summary>
    public class querystate_result : base_post_result
    {
        /// <summary>
        /// 返回的用户在线状态结构化信息
        /// </summary>
        public List<querystate_QueryResult> QueryResult { get; set; }
        /// <summary>
        /// 状态查询失败的帐号列表，在此列表中的目标帐号，状态查询失败或目标帐号不存在。若状态全部查询成功，则 ErrorList 为空
        /// </summary>
        public List<querystate_ErrorList> ErrorList { get; set; }
    }
    public class querystate_QueryResult
    {
        /// <summary>
        /// 返回的用户的 UserID
        /// </summary>
        public string To_Account { get; set; }
        /// <summary>
        /// 返回的用户状态，目前支持的状态有：   前台运行状态（Online）：客户端登录后和即时通信 IM 后台有长连接    后台运行状态（PushOnline）：iOS 和 Android 进程被 kill 或因网络问题掉线，进入 PushOnline 状态，此时仍然可以接收消息的离线推送。客户端切到后台，但是进程未被手机操作系统 kill 掉时，此时状态仍是 Online 未登录状态（Offline）：客户端主动退出登录或者客户端自上一次登录起7天之内未登录过 如果用户是多终端登录，则只要有一个终端的状态是 Online ，该字段值就是 Online
        /// </summary>
        public string Status { get; set; }
        /// <summary>
        /// 详细的登录平台信息
        /// </summary>
        public List<querystate_QueryResult_Detail> Detail { get; set; }
    }

    public class querystate_QueryResult_Detail
    {
        /// <summary>
        /// 登录的平台类型。可能的返回值有："iPhone", "Android", "Web", "PC", "iPad", "Mac"。
        /// </summary>
        public string Platform { get; set; }
        /// <summary>
        /// 该登录平台的状态
        /// </summary>
        public string Status { get; set; }
    }


    public class querystate_ErrorList
    {
        /// <summary>
        /// 状态查询失败的目标帐号
        /// </summary>
        public string To_Account { get; set; }
        /// <summary>
        /// 状态查询失败的错误码，若目标帐号的错误码为70107，表示该帐号不存在
        /// </summary>
        public int ErrorCode { get; set; }
    }
    #endregion
}
